SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


CREATE PROCEDURE [dbo].[LIQART]
@Agente INT,
@Servicio INT,
@Plaza INT,
@Resultado DECIMAL(18,4) OUTPUT,
@idLiquidacion INT,
@DiasALiquidar INT,
@DiasDelPeriodo INT,
@Desde DATETIME,
@Hasta DATETIME
AS 

SET NOCOUNT ON
SET DATEFORMAT dmy
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- REGISTRO DE ACTUALIZACIONES
-- 17/11/2005 - Se agregaron parametros @Desde y @Hasta para manejo de Fechas en Titulares y Suplentes
-- 09/07/2006 - Los parametros se obtienen de la funcion fnObtenerValorDeParametro con la fecha que corresponda.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

DECLARE @Jubilacion DECIMAL(18,4)
DECLARE @TotalRemunerativo DECIMAL(18,4)
DECLARE @Afiliacion INT, @horas INT, @regimensalarial  INT, @organizacion INT, @situacionrevista INT
DECLARE @DescAporte DECIMAL(18,4)
DECLARE @NroError INT
DECLARE @SubOrganizacion INT
DECLARE @CargoSalarial INT
DECLARE @CabeceraDeLiquidacion INT
DECLARE @PorcentajeART DECIMAL(18,4)
DECLARE @ImporteART DECIMAL(18,4)
DECLARE @SueldoBasico DECIMAL(18,4)

-- Sacar Porcentaje ACTUALIZADO 28/09/2005
--SELECT @PorcentajeART = CONVERT(DECIMAL(18,4), Valor1) FROM Tb_Parametros WHERE Parametro = '%SubsidioART'
--SELECT @ImporteART = CONVERT(DECIMAL(18,4), Valor1) FROM Tb_Parametros WHERE Parametro = 'ImporteFijoART'

SELECT @PorcentajeART = CONVERT(DECIMAL(18,4), dbo.fnObtenerValorDeParametro ('%SubsidioART', @Hasta))
SELECT @ImporteART = CONVERT(DECIMAL(18,4), dbo.fnObtenerValorDeParametro ('ImporteFijoART', @Hasta))

--Se extrae el Total Remunerativo
SELECT @TotalRemunerativo = SUM(MontoHaberes) FROM tb_RegistroDeLiquidaciones, tb_ConceptosDeLiquidacion 
WHERE Servicio = @Servicio AND liquidacion = @idLiquidacion AND concepto = idConceptoLiquidacion AND (tipo = 1 or tipo = 2)

SELECT @Afiliacion = idAfiliacion FROM tb_Afiliaciones WHERE idAgente = @Agente
SELECT @horas= horas, @regimensalarial = regimensalarial, @SubOrganizacion = SubOrganizacion FROM tb_Plazas WHERE idPlaza = @Plaza
SELECT @Organizacion = ubicacionOrig, @SituacionRevista = SituacionRevista, @CargoSalarial = CargoSalarial FROM tb_ServiciosAgentes WHERE idservicioAgente =  @Servicio
SELECT @SueldoBasico = MontoHaberes FROM tb_RegistroDeLiquidaciones WHERE Concepto = 4 AND Liquidacion = @IdLiquidacion AND Servicio = @Servicio

If (SELECT OrganizacionLiquidadora FROM tb_SubOrganizaciones WHERE idSubOrganizacion = @SubOrganizacion) Is Not Null
	SELECT @Organizacion = OrganizacionLiquidadora FROM tb_SubOrganizaciones WHERE idSubOrganizacion = @SubOrganizacion

SELECT @DescAporte = (@TotalRemunerativo * (@PorcentajeART / 100))

IF @SueldoBasico > 0
	IF NOT EXISTS(SELECT * FROM tb_RegistroDeLiquidaciones WHERE Liquidacion = @idLiquidacion AND @Agente = agente AND concepto = 25)
	BEGIN
		INSERT INTO tb_RegistroDeLiquidaciones (AfectadosPorAjuste, Afiliacion, Agente, Ajuste, Cantidad, Cargosalarial, Concepto, Descripcion, DescuentoExterno, Desde, Dias, Embargo, Hasta, Horas, LegajoSalarial, Liquidacion, MontoDescuento, MontoHaberes, Organizacion, Reclamado, Servicio, SituacionRevista, DiasLiquidados, SubOrganizacion)
		VALUES (null, @Afiliacion, @Agente, null, 1, null, 25, null, null, null, null, null, null, @horas, 0, @idLiquidacion, @DescAporte + @ImporteART, 0, @Organizacion, null, @Servicio, @SituacionRevista, @diasALiquidar, @SubOrganizacion)
		UPDATE tb_RegistroDeLiquidaciones SET MontoHaberes = (MontoHaberes + @DescAporte + @ImporteART) WHERE Liquidacion = @idLiquidacion AND Servicio = @Servicio AND Concepto =24
	END
	ELSE
	BEGIN
		INSERT INTO tb_RegistroDeLiquidaciones (AfectadosPorAjuste, Afiliacion, Agente, Ajuste, Cantidad, Cargosalarial, Concepto, Descripcion, DescuentoExterno, Desde, Dias, Embargo, Hasta, Horas, LegajoSalarial, Liquidacion, MontoDescuento, MontoHaberes, Organizacion, Reclamado, Servicio, SituacionRevista, DiasLiquidados, SubOrganizacion)
		VALUES (null, @Afiliacion, @Agente, null, 1, null, 25, null, null, null, null, null, null, @horas, 0, @idLiquidacion, @DescAporte, 0, @Organizacion, null, @Servicio, @SituacionRevista, @diasALiquidar, @SubOrganizacion)
		UPDATE tb_RegistroDeLiquidaciones SET MontoHaberes = (MontoHaberes + @DescAporte) WHERE Liquidacion = @idLiquidacion AND Servicio = @Servicio AND Concepto = 24
	END

SELECT @NroError = @@error

IF @NroError <> 0
BEGIN
	SELECT @CabeceraDeLiquidacion = IdCabeceraLiquidacion FROM tb_Liquidaciones WHERE IdLiquidacion = @IdLiquidacion
	INSERT INTO tb_ErroresLiquidacion (Agente, Concepto, Diagnostico, Fecha, Liquidacion, Organizacion, Servicio, CabeceraDeLiquidacion, NumeroDeError) VALUES
	(@Agente, 25, CONVERT(VARCHAR,@NroError), GETDATE(), @idLiquidacion, @Organizacion, @Servicio, @CabeceraDeLiquidacion, @NroError)
END
GO
